package com.gl.glcourses.services.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gl.glcourses.repository.ICursosRepository;
import com.gl.glcourses.repository.IMaterialAdjuntoRepository;
import com.gl.glcourses.services.IMaterialAdjuntoServices;
import com.gl.glcourses.vos.Confirmacion;
import com.gl.glcourses.vos.MaterialAdjunto;
import com.gl.glcourses.vos.constants.Constants;

@Service
@RemotingDestination(channels = { "my-amf" })
@Transactional
public class MaterialAdjuntoServices implements IMaterialAdjuntoServices{
	
	@Autowired
	IMaterialAdjuntoRepository repoMaterialAdjunto;
	
	@Autowired
	ICursosRepository repoCurso;

	protected final Log logger = LogFactory.getLog(getClass());


//	public Confirmacion agregarAdjunto(Adjunto adjunto) throws Exception {
//		Confirmacion confirmacion = new Confirmacion();
//	
//		if (repoAdjunto.findAdjunto(adjunto.getNombre())==null){
//			repoCurso.save(adjunto);
//		}
//		return confirmacion;
//	}
	
	//VER DE ELIMINAR 
//	public Confirmacion agregarMaterialAdjunto(MaterialAdjunto materialAdjunto, Curso curso) throws Exception{
//		Confirmacion confirmacion=new Confirmacion();
//		if((materialAdjunto.getUrl()) != null)
//			curso.addMaterialAdj(materialAdjunto);
//		    materialAdjunto.setCurso(curso);
//		    logger.info("saveAdjuntoCurso");
//		    confirmacion.setEstado(Constants.CONFIRMACION_OK);
//			repoCurso.save(materialAdjunto);
//		//guardo los materiaes adjuntos
//
//			
//		return confirmacion;
//	}


	@Override
	public MaterialAdjunto buscarMaterialAdjunto(MaterialAdjunto materialAdjunto) throws Exception {

		return (MaterialAdjunto)repoMaterialAdjunto.findById(materialAdjunto.getId(), MaterialAdjunto.class);
	}

	
	public List<MaterialAdjunto>listarMaterialesAdjunto() {
		logger.info("getAdjuntoList");
		try {
			return repoMaterialAdjunto.getListEntity(MaterialAdjunto.class);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	//@Descachea(cacheKey="materialesAdjuntos") 
	public Confirmacion editarLinks(MaterialAdjunto materialAdjunto) throws Exception{
		Confirmacion confirmacion = new Confirmacion();
		
		logger.info("saveMaterialAdjunto");
		repoMaterialAdjunto.save(materialAdjunto);
		
		confirmacion.setEstado(Constants.CONFIRMACION_OK);
		return confirmacion;
	}
}
